package app.kits;

import org.joda.time.DateTime;

import java.util.Calendar;
import java.util.Date;

/**
 * <p>
 * 日历操作辅助类
 * </p>
 *
 * @author Jerry Ou
 * @version 1.0 2014-02-12 13:41
 * @since JDK 1.6
 */
public class CalendarKit {

    public static final int WEEK_SIZE = 7;

    /**
     * 获取星期一
     *
     * @return 星期一
     */
    public Date getMonday() {
        int[] toAddDays = {
                6, 0, 1, 2, 3, 4, 5
        };
        Calendar calendar = Calendar.getInstance();
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

        int toAdd = toAddDays[dayOfWeek - 1];

        calendar.add(Calendar.DATE, (0 - toAdd));
        return calendar.getTime();
    }

    /**
     * 获取昨天
     *
     * @return 昨天
     */
    public static Date getYesterday() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        return cal.getTime();
    }


    /**
     * 获取当月第一天
     *
     * @return 当月第一天
     */
    public static Date getFirstDayOfMonth() {
        DateTime dateTime = DateTime.now().dayOfMonth().withMinimumValue();
        return dateTime.toDate();
    }

    /**
     * 获取当月最后一天
     *
     * @return 当月最后一天
     */
    public static Date getLastDayOfMonth() {
        DateTime dateTime = DateTime.now().dayOfMonth().withMaximumValue();
        return dateTime.toDate();
    }

    /**
     * 获取当月第一天
     *
     * @param pattern 格式，并进行格式化
     * @return 当月第一天
     */
    public static String getFirstDayOfMonth(String pattern) {
        DateTime dateTime = DateTime.now().dayOfMonth().withMinimumValue();
        return dateTime.toString(pattern);
    }

    /**
     * 获取当月最后一天，并进行格式化
     *
     * @param pattern 格式
     * @return 当月最后一天
     */
    public static String getLastDayOfMonth(String pattern) {
        DateTime dateTime = DateTime.now().dayOfMonth().withMaximumValue();
        return dateTime.toString(pattern);
    }
}
